1 DRY (Don’t Repeat Yourself)
- 不出现多次同样的字符串拼接
- 不出现多次同样的对象访问
- 不出现相似的函数
- 不出现相似的模块代码
- 不出现相似。。。
- 一切相似的东西,都应该在一个地方表达,然后复用
2 KISS (Keep It Simple,Stupid)
- 不过早优化
- 不过度设计
- 不复杂化代码
- 不断重构
3 XP (eXtreme Programming)
- 快速迭代
- 持续集成,不断重构
- 单元测试
4 面向对象设计原则
4.1 单一职责原则 (The Single Responsibility Principle)
- 一个东西做一件事情,并把它做好
- 应该有且仅有一个原因引起类的变更
- 类的复杂度降低
- 可读性提高
- 可维护性提高
- 变更引起的风险降低
4.2 开放-封闭原则 (The Open-Close Principle)
- 让不能变的变不了,让可变的容易变
- 软件实体(类,模块,函数等)应该是可以扩展的,但是不可修改的
4.3 里氏替换原则 (The Liskov Substitution Principle)
- 抽象的东东能用具体的东东替代
- 所有引用基类的地方必须能透明地使用其子类
- 子类必须完全的实现父类的抽象方法
- 子类可以有自己的个性
- 覆盖或实现父类的方法时输入参数可以被放大
- 覆盖或实现父类的方法时输出结果可以被缩小
4.4 接口隔离原则 (The Interface Segregation Principle)
- 不相关的就不能强制被关注
- 不应该强迫使用者依赖于他们不用的方法
- 类间的依赖关系应该建立在最小的接口上
- 接口尽量要小
- 接口要高内聚
- 可提供定制
- 接口设计粒度要适度
4.5 依赖导致原则 (The Dependency Inversion Principle)
- 容易变的不能被公用
- 高层模块不应该依赖于低层模块,二者都应该依赖于抽象
- 抽象不应该依赖于细节,细节应该依赖于抽象
4.6 最少知识原则 (Least Knowledge Principe),迪米特法则(Low of Demeter)
- 不涉及到的就不应该关注
- 出现在成员变量,方法的输入输出参数中的类被称为朋友类
- 只和朋友交流
- 尽量内敛,少对外开放接口
5 参考资料
- 《程序员修炼之道-从小共到专家》,The Pragmatic Programmer, From Journeyman to Master
- 《敏捷软件开发:原则、模式和实践》
- 《您的设计模式》
- 《设计模式之禅》
最后更新: 2022年03月02日 03:32
原始链接: http://rawbin-.github.io/dev-general/history/2017-04-21-code-design-rules/